const path = require('path')
module.exports = {
	output: {
		publicPath: '/',
		path: path.resolve(__dirname, 'dist'),
		filename: '[name]-[hash].js'
	},
	module: {
		rules: [{
			test: /(\.js|\.jsx)$/,
			exclude: /node_modules/,
			use: {
				loader: 'babel-loader',
				options: {
					presets: ['es2015', 'react']
				}
			}
		}, {
			test: /\.css$/,
			loader: 'style-loader!css-loader!px2rem-loader?base=37.5&scale=2&minSize=1&ignore=border|margin|padding'
		}, {
			test: /\.(png|svg|jpg|gif)$/,
			use: ['file-loader']
		}, {
			test: /\.(woff|woff2|eot|ttf|otf)$/,
			use: ['file-loader']
		}]
	},
	optimization: {
		splitChunks: {
			chunks: "initial", // 必须三选一： "initial" | "all"(默认就是all) | "async"
			minSize: 0, // 最小尺寸，默认0
			minChunks: 1, // 最小 chunk ，默认1
			maxAsyncRequests: 1, // 最大异步请求数， 默认1
			maxInitialRequests: 1, // 最大初始化请求书，默认1
			name: () => {}, // 名称，此选项课接收 function
			cacheGroups: { // 这里开始设置缓存的 chunks
				priority: "0", // 缓存组优先级 false | object |
				vendor: { // key 为entry中定义的 入口名称
					chunks: "initial", // 必须三选一： "initial" | "all" | "async"(默认就是异步)
					test: /react|lodash/, // 正则规则验证，如果符合就提取 chunk
					name: "vendor", // 要缓存的 分隔出来的 chunk 名称
					minSize: 0,
					minChunks: 1,
					enforce: true,
					maxAsyncRequests: 1, // 最大异步请求数， 默认1
					maxInitialRequests: 1, // 最大初始化请求书，默认1
					reuseExistingChunk: true // 可设置是否重用该chunk（查看源码没有发现默认值）
				}
			}
		}
	},
}